/**
 *
 * {@link com.algorithm.ch1.cjm2.array.RemoveDuplicates} 移除有序数组中重复的元素
 *  类似插入排序，默认第一个元素排序好了，从第二个元素开始比较，第二个元素与待排序的区域比较，如果不相等，就插入排序好的区域
 *
 * {@link com.algorithm.ch1.cjm2.array.MaxProfit} 买卖股票的最佳时机
 *  通过分析发现，我们只需要把所有的上升趋势的想加即可
 *
 * {@link com.algorithm.ch1.cjm2.array.Rotate} 旋转数组
 *  1. 暴力破解办法，循环k此，每次移动一位
 *  2. 使用额外的数组，定位每个元素在另一个额外数组的位置并复制
 *  3. 使用环状替换，循环n此，给每个元素做替换
 *  4. 使用反转，首先把整个元素进行反转，然后再反转签名的k个元素和后面的 (n-k)个元素
 *
 *  {@link com.algorithm.ch1.cjm2.array.ContainsDuplicate} 存在重复元素
 *  1. 朴素线性查找
 *      循环不变式：在下一次搜索之前，搜索过的整数中没有重复的整数
 *  2. 先排序，再比较相邻元素是否相等
 *  3. 哈希表
 */
package com.algorithm.ch1.cjm2.array;